import 'dart:io';

import 'package:eq/src/core.dart';
import 'package:eq/src/interpreter.dart';
import 'package:eq/src/utils.dart';

void addStdioFunctions(Module module) {
  addNativeFunction("stdin", _stdin, module);
  addNativeFunction("stdout", _stdout, module);
  addNativeFunction("stderr", _stderr, module);
}

Value _stdin(List<Value> args) {
  return Value(ValueType.STRING_VALUE, stdin.readLineSync() ?? '');
}

Value _stdout(List<Value> args) {
  if (args.isNotEmpty) {
    stdout.writeln(args[0]);
  }
  return Value(ValueType.NULL_VALUE, null);
}

Value _stderr(List<Value> args) {
  if (args.isNotEmpty) {
    stderr.writeln(args[0]);
  }
  return Value(ValueType.NULL_VALUE, null);
}
